package com.wanfan.wanfanBrush.common;

import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.StpInterface;
import cn.dev33.satoken.stp.StpUtil;
import com.wanfan.wanfanBrush.exception.BusinessException;
import com.wanfan.wanfanBrush.model.entity.User;
import com.wanfan.wanfanBrush.service.UserService;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import static com.wanfan.wanfanBrush.constant.UserConstant.USER_LOGIN_STATE;

/**
 * @author 晚饭
 * @date 2025/06/12
 */

@Component
public class StpInterfaceImpl implements StpInterface {

    @Resource
    private UserService userService;
    /**
     * 返回一个账号的权限码集合
     */
    @Override
    public List<String> getPermissionList(Object loginId, String s) {
        return new ArrayList<>();
    }

    /**
     * 返回一个账号所拥有的角色列表
     */
    @Override
    public List<String> getRoleList(Object loginId, String s) {
        User user =(User) StpUtil.getSessionByLoginId(loginId).get(USER_LOGIN_STATE);
        //todo：此处有bug 无法进行强转用户，暂无法解决，改为从数据库获取角色
        //todo :解决办法 注释依赖spring-boot-devtools
        //从当前登录人中获取角色
        //查数据库
//        User user = userService.getById((String) loginId);
//        if (user == null) {
//            throw new BusinessException(ErrorCode.NOT_LOGIN_ERROR);
//        }
        return Collections.singletonList(user.getUserRole());
    }
}
